package com.hyy.blogtest.controller;

import com.hyy.blogtest.common.pojo.request.AddBlogRequest;
import com.hyy.blogtest.common.pojo.request.UpdateBlogRequest;
import com.hyy.blogtest.common.pojo.response.BlogInfoResponse;
import com.hyy.blogtest.service.BlogService;
import jakarta.annotation.Resource;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/blog")
@Slf4j
public class BlogController {

    @Resource(name = "blogServiceImpl")
    private BlogService blogService;


    /*
    * 获取博客列表，显示部分文本信息
    * */
    @GetMapping("/getList")
    public List<BlogInfoResponse> getList() {
        log.info("获取博客列表");
        return blogService.getList();
    }

    @GetMapping("/getBlogDetail")//NotNull 这个注解自动校验参数不为空（javaee jakta中的）
    public BlogInfoResponse getBlogDetial(@NotNull Integer blogId) {
        log.info("获取当前博客细节，id={}", blogId);
       return  blogService.getBlogDetail(blogId);
    }

    @PostMapping("/add")//需要使用@Validated注解，才可以启用AddBlogRequest中的参数校验
    public Boolean addBlog(@Validated @RequestBody AddBlogRequest addBlogRequest) {
        log.info("添加博客");
    return blogService.addBlog(addBlogRequest);
    }

    @PostMapping("/deleteBlog")
    public Boolean deleteBlog(@NotNull Integer blogId) {
        log.info("删除博客id={}", blogId);
        return blogService.deleteBlog(blogId);
    }

    @PostMapping("/updateBlog")
    public Boolean updateBlog(@Validated @RequestBody UpdateBlogRequest updateBlogRequest) {
        log.info("更新博客内容，博客id={}", updateBlogRequest.getId());
        return blogService.updateBlog(updateBlogRequest);
    }

}
